::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::---===-=+===++------:::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::-=+++*********#%@%#*+===+-::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::--+*****####*****###%%%%%%*=-::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::-+#%@@@@@%@@@@%%%##%%%%%@@@@%#+-::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::=*#%@@@@@@@@@@@@@@@%%%%%%%%@@@@#+-:::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::-+#%%@@@@@@@@@@@@@@%###%%%@@%@@@@@%*=::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::-+****##%@@@@@@@@@%%%%%#######%%@@@@@%*-:::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::-=+**##*+**#%%@@@%#####**+*****##%%@@@@%*:::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::-+**###***+******++++========++**#%%%@@@%=::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::=***#********+====----------====+*##%%@%%*::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::+**###*++++*+=-----------======-==++*%%%%*-:::::::::::::::::::::::::::::
:::::::::::::::::::::::::::-+*#%%#*+++++===---------====---=====+***##-:::::::::::::::::::::::::::::
:::::::::::::::::::::::::::-=+#%%#*++====---------------=========+****=:::::::::::::::::::::::::::::
::::::::::::::::::::::::::::-=##%#*++====---------+***++===++====+****+:::::::::::::::::::::::::::::
::::::::::::::::::::::::::::--+*##*#**####*+=---=+*###++++======+*#***=:::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::-=***++*#%#+=+**=--===+#%+-+++=---=#%#+=+=:::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::-+**++**##=-++*+=====+++==------=+**++-=-:::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::-++++==++++++++=====-=-------===+++==-=-:::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::=*++========*++++=-----------===+=====-:::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::-+++=======++====++----------==++=--=-::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::=+++===--=+**+++===--------==++++==--:::::::::::::::::::::::::::::-
:::::::::::::::::::::::::::::::::-=++++====+++++======----====++=----::::::::::::::::::::::::::::::+
:::::::::::::::::::::::::::::::::--=+*+++++++========+==---=====-::::::::::::::::::::::::::::::::::=
:::::::::::::::::::::::::::::::::::-=++++**#*+===-=+**+=---=====-:::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::-=+++++*#*+++++++=-----=====::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::-=+*+++**+++====----===+===::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::-+***++++=====---===++====-:::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::=**#*+===------=+++==-==+-:::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::=*++*#*++++==++++==---==+=--:::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::-+++=+*##*++=======---====+*##*=::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::-=*%#*++==+***=---=====--=====+++@@@%+-:::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::-=#@@@@%*+++==++**+=======--======+#@@@@@@#+-::.:::::::::::::::::::::
:::::::::::::::::::::::::::=++#%@@@@@@@*=++===++++===-==----===-=*@@@@@@@@@@@#*+=::..:::::::::::::::
::::::::::::::::::::::::-+%@@@@@@@@@@@@@*==+====+======----==--=#@@@@@@@@@@@@@@@@%#*+=-::.::::::::::
:::::::::::::::::::::-=*@@@@@@@@@@@@@@@@@#=====-=====--------=#@@@@@@@@@@@@@@@@@@@@@@@@%*=-:::::::::
:::::::::::::::::-=*%@@@@@@@@@@@@@@@@@@@@@@*+=------------+*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*-::::::
:::::::::::::-+*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*+----==+*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=.::::
::::::::::::=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+.:::
:::::::::::*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+...
:::::::::-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=..
::::::::+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-.
:::::::+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%: